package com.gdust.lease.common.mybatisplus;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * ClassName: MybatisMetaObjectHandler
 * Package: com.gdust.lease.common.mybatisplus
 * Description:自动填充配置类
 * 使用mybatis-plus的自动填充功能,自动填充数据库字段中的创建时间和更新时间
 * 所谓自动填充，就是通过统一配置，在插入或更新数据时，自动为某些字段赋值
 *
 *
 * @Author syun
 * @Create 2025/1/1 20:11
 * @Version 1.0
 */
@Component // @Component 注解用于将该类声明为 Spring 容器中的一个 Bean
public class MybatisMetaObjectHandler implements MetaObjectHandler {
    /**
     * 插入操作的自动填充逻辑
     * 当执行插入数据时，自动填充字段 "createTime" 为当前时间。
     *
     * @param metaObject MetaObject 是 MyBatis 提供的对象，用于操作元对象的反射工具。
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        // "createTime" 是字段名，Date.class 是字段类型，new Date() 是填充值
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
    }

    /**
     * 更新操作的自动填充逻辑
     * 当执行更新数据时，自动填充字段 "updateTime" 为当前时间。
     *
     * @param metaObject MetaObject 是 MyBatis 提供的对象，用于操作元对象的反射工具。
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        // "updateTime" 是字段名，Date.class 是字段类型，new Date() 是填充值
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}
